unsigned int AllocLength; // Current size of array, in T sized units. if AllocLength = 0, pData is const and needs CopyOnWrite
HEADER_T Header; // User defined header block (must be safe to copy with operator=)
};
/*!
\author Sean Cavanaugh
\email sean@dimensionalrift.com
\cvsauthor $Author: sean $
\date $Date: 2000/09/11 20:28:24 $
\version $Revision: 1.1 $
\brief ReferenceObject is a template class designed to be used a base class for pass-by-reference objects, to that things such as returning objects up the stack efficiently are possible.
\bug EVERY non const function needs its very first operation to be CopyForWrite()
\bug EVERY derived class should define its operator=() to call the ReferenceObject base class version (notice this operator is protected,)
\bug HEADER_T will probably need an operator=() defined for all but the most trivial types
\bug Store objects or simple data types, NO POINTERS (use ReferencePtrObject for that) (they will leak like mad)